home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / music / dtu140.zip / DTU-API.ASM next >
Assembly Source File  |  1995-03-13  |  6KB  |  157 lines

  1. ;=============================================================================
  2. ;                 Some example code for the DTU API...
  3. ;=============================================================================
  4.  
  5. Code Segment
  6.      Assume Cs:Code,Ds:Code
  7.      Org 100h
  8.      .386
  9. Start:
  10.      Mov      Ah,9
  11.      Mov      Dx,Offset Welcome
  12.      Int      21h                      ;Print the Welcome String...
  13.      Sub      Ax,Ax                    ;Start checking Multiplex Number 0
  14. CheckLoop:
  15.      Push     Ax                       ;Save current Mux Number
  16.      Int      2Dh                      ;Installation check
  17.      Or       Al,Al                    ;Is there a program installed here ?
  18.      Pop      Ax                       ;Restore Mux Number
  19.      Jnz      ProgramInstalled         ;Program installed -> Jump
  20. NextCheck:
  21.      Inc      Ah                       ;No program installed -> Try next Mux
  22.      Jnz      CheckLoop                ;Loop max. 256 times...
  23. DTUNotInstalled:
  24.      Mov      Ah,9                     ;DTU not found at one of 256 Mux's
  25.      Mov      Dx,Offset NoDTUStr
  26.      Int      21h                      ;Print DTU not installed
  27.      Int      20h                      ;End program...
  28. ProgramInstalled:
  29.      Pusha                             ;Save all registers
  30.      Mov      Es,Dx                    ;Set ES:DI to program signature
  31.      Mov      Si,Offset DTUSignature   ;Compare to DTU's signature
  32.      Mov      Cx,16
  33.      Rep      Cmpsb                    ;Compare strings
  34.      Popa                              ;Restore all registers
  35.      Jnz      NextCheck                ;Strings not equal -> Scan next program
  36. DTUFound:
  37.      Mov      [DTUNumber],Ah           ;Save Multiplex Number
  38.      Mov      Ah,9
  39.      Mov      Dx,Offset DTUFoundStr
  40.      Int      21h                      ;Print DTU found
  41.      Mov      Al,Ch                    ;Move Major Version Number into AL
  42.      Call     PrintBCD                 ;Print Major Version Number
  43.      Mov      Ah,2                     ;Subfunction 2: Print character
  44.      Mov      Dl,'.'                   ;The character...
  45.      Int      21h                      ;Print...
  46.      Mov      Al,Cl                    ;Move Minor Version Number into AL
  47.      Call     PrintBCD                 ;Print Minor Version Number
  48.      Mov      Ah,9
  49.      Mov      Dx,Offset ExtAPIStr
  50.      Int      21h
  51.      Mov      Ah,[DTUNumber]
  52.      Mov      Al,10h
  53.      Int      2Dh
  54.      Mov      Al,Bl
  55.      Mov      [ExtendedAPI],Al
  56.      Call     PrintYesNo
  57.      Cmp      [ExtendedAPI],1
  58.      Jnz      NoExtAPIInfo
  59.      Mov      Ah,9
  60.      Mov      Dx,Offset NumUnitsStr
  61.      Int      21h
  62.      Mov      Ah,[DTUNumber]
  63.      Mov      Al,11h
  64.      Sub      Bl,Bl
  65.      Int      2Dh                      ;Get # of units
  66.      Mov      Al,Bl
  67.      Movzx    Cx,Al                    ;Load number of units in CX
  68.      Call     PrintBCD
  69.      Mov      Ah,[DTUNumber]
  70.      Mov      Al,11h
  71.      Mov      Bl,1
  72.      Mov      Dx,Cs
  73.      Mov      Di,Offset UnitBuf
  74.      Int      2Dh
  75.      Mov      Ah,9
  76.      Mov      Dx,Offset InstallStr
  77.      Int      21h
  78.      Mov      Si,Offset UnitBuf
  79. PrintLoop:
  80.      Lodsb
  81.      Call     PrintBCD
  82.      Mov      Ah,2
  83.      Mov      Dl,' '
  84.      Int      21h
  85.      Loop     PrintLoop
  86. NoExtAPIInfo:
  87.      Mov      Ah,9
  88.      Mov      Dx,Offset Int3Str
  89.      Int      21h
  90.      Int      03h                      ;Call DTU through INT 03
  91.      Cmp      [ExtendedAPI],1
  92.      Jnz      NoExtAPIPopup
  93.      Mov      Ah,9
  94.      Mov      Dx,Offset Sub3Str
  95.      Int      21h
  96.      Mov      Ah,[DTUNumber]
  97.      Mov      Al,3
  98.      Int      2Dh                      ;Call DTU through INT 2D/03
  99. NoExtAPIPopup:
  100.      Mov      Ah,9
  101.      Mov      Dx,Offset EndStr
  102.      Int      21h
  103.      Int      20h
  104.  
  105. PrintYesNo Proc Near
  106.      Pusha
  107.      Mov      Dx,Offset YesNo
  108.      Not      Al
  109.      And      Al,1
  110.      Shl      Al,2
  111.      Sub      Ah,Ah
  112.      Add      Dx,Ax
  113.      Mov      Ah,9
  114.      Int      21h
  115.      Popa
  116.      Ret
  117. Endp
  118.  
  119. PrintBCD Proc Near
  120.      Pusha                             ;Save all registers
  121.      Push     Ax                       ;Save AX
  122.      Shr      Al,4                     ;Move upper BCD Number into low bits
  123.      Add      Al,'0'                   ;Add '0' to become number in ASCII
  124.      Mov      Ah,2                     ;Print character with DOS Function 2
  125.      Mov      Dl,Al
  126.      Int      21h                      ;Print...
  127.      Pop      Ax                       ;Restore AX
  128.      And      Al,0Fh                   ;Mask out lower BCD Number
  129.      Add      Al,'0'                   ;Add '0' to become number in ASCII
  130.      Mov      Ah,2                     ;Print character with DOS Function 2
  131.      Mov      Dl,Al
  132.      Int      21h                      ;Print...
  133.      Popa                              ;Restore all registers
  134.      Ret                               ;Return...
  135. Endp
  136.  
  137. Welcome       Db    13,10,'DTown Utilities API Example Program.',13,10,13,10,'$'
  138. NoDTUStr      Db    'DTU is not installed...',13,10,'$'
  139. DTUFoundStr   Db    'DTU installed:  DTU Version               : $'
  140. ExtAPIStr     Db    13,10,'                Extended API Installed    : $'
  141. NumUnitsStr   Db    13,10,'                Total number of units     : $'
  142. InstallStr    Db    13,10,'                Units installed           : $'
  143. Int3Str       Db    13,10,'                Calling DTU with INT 03h...$'
  144. Sub3Str       Db    13,10,'                Calling DTU with INT 2Dh, Function 03h...$'
  145. EndStr        Db    13,10,13,10,'DTU tested OK...',13,10,13,10,'$'
  146.  
  147. ExtendedAPI   Db    0                  ;1=Extended API installed, 0=not...
  148. HandlerOfs    Dw    0                  ;Stored Pop-up Handler Offset
  149. HandlerSeg    Dw    0                  ;Stored Pop-up Handler Segment
  150. DTUNumber     Db    0                  ;Multiplex Number for DTU
  151. DTUSignature  Db    'DTown SDDTU     ' ;DTU's Signature
  152. UnitBuf       Db    100 Dup(0)
  153. YesNo         Db    'Yes$No$'
  154.  
  155. Code Ends
  156.      End Start
  157.